// 导入数据库操作模块
const db = require('../db/index')

// 导入 bcryptjs 这个包
const bcrypt = require('bcryptjs')

// 导入token的包
const jwt = require('jsonwebtoken')
// 导入密钥
const config = require('../config')
// 注册用户的处理函数
exports.regUser = (req,res) => {
    const userinfo = req.body

    // 对表单中的数据，进行合法性的检验
    // if(!userinfo.username || !userinfo.password ){
    //     return res.cc('用户名和密码不合法')
    // }

    // 定义sql语句，查询用户名是否被占用
    const sqlStr = 'select * from ev_users where username=?'
    db.query(sqlStr,userinfo.username,(err,results) => {
        if(err){
            return res.cc(err)
        }
        if(results.length > 0){
            return res.cc('用户名被占用请更换用户名',2)
        }
        // 调用bcrypt.hashSync() 进行密码加密
        userinfo.password = bcrypt.hashSync(userinfo.password,10)
        
        // 定义插入新用户的sql语句
        const sql = 'insert into ev_users set ?'
        db.query(sql,userinfo,(err,results) => {
            if(err) return res.cc(err)
            // 判断影星行数行为是否=1
            if(results.affectedRows != 1) return res.cc('注册用户失败',2)
            // 注册成功
            res.cc('注册用户成功',0)
        })

    })

}

// 登陆用户的处理函数
exports.login=(req,res) => {
    const userinfo = req.body
    const sql = 'select * from ev_users where username=?'
    db.query(sql,userinfo.username,(err,results) => {
        if(err) return res.cc(err)
        if(results.length !== 1) return res.cc('登陆失败')

        // 判断密码是否正确
        const compareRusult = bcrypt.compareSync(userinfo.password,results[0].password)
        if(!compareRusult) return res.cc('登陆失败')
        
        // 生成token
        const user = {...results[0],password:'',user_pic:'',}
        const tokenStr = jwt.sign(user,config.jwSecretKen,{expiresIn:config.expiresIn})
        res.send({
            status:0,
            message:'登陆成功',
            data:results[0],
            token:'Bearer '+tokenStr
        })
    } )
}